Вход

Просмотр полной версии : this - кто он и зачем?


Golovastik
02.03.2011, 21:10
function A ( ){
this.t = function () { alert('Hello my little friend') }
}
var a = new A();
a.t();
Что означает this здесь, почему для каждого свойства и метода его нужно писать, почему без него нельзя описать свойство или метод?

Gvozd
02.03.2011, 21:25
а поискать инфу, прежде чем задавать вопрос не пробовал?
http://javascript.ru/tutorial/object/thiskeyword

Golovastik
02.03.2011, 21:27
this - это вообще объект или это такая же конструкция языка, как фор, или вайл?

Kolyaj
02.03.2011, 22:01
Golovastik,
ответы на все ваши вопросы есть в сети в самых разнообразных вариантах. Писать здесь всё ещё раз специально для вас никто не будет.

Golovastik
03.03.2011, 01:14
Читаю здесь http://javascript.ru/tutorial/object/thiskeyword

function Animal(name) {
this.name = name
}
animal = new Animal("beastie");

Если следовать согласно картинке по этой ссылке:
1. Конструктор Animal инициализирует объект под названием animal.
2. После того, как инициализация объекта под названием animal прошла.
конструктор Animal создал где-то в оперативной памяти ячейку с названием this
которая стала ссылаться на свойства и методы конструктора под названием Animal?
3. Что вызывается если уже всё вызвалось,если следовать согласно картинке?

Расшифруйте пожалуйста те, 3 пункта из той ссылки правильно.
Заранее благодарю.

Golovastik
03.03.2011, 02:00
// Вот здесь в первой строке метод Animal - это класс?
function Animal(name) {
this.name = name
}
animal = new Animal("beastie");


Скажите, а сам this находится в оперативной памяти компа, где-то в ячейке? И в этот момент, когда конструктор вызвался, он сразу инициализировал объект animal выделив сразу и память для него и сразу сам конструктор с именем Animal стал указывать на любое свойство и метод класса Animal или сама конструкция this,которая лежит где-то в оперативной памяти компа и хранит адрес, стала хранит ссылку, а не конструктор стал хранить ссылку на любое свойство или метод класса?

Matre
03.03.2011, 08:29
Golovastik

В JavaScript нет классов, откуда Вы взяли этот бред? Дайте ссылку, я лично её автору сделаю экзекуцию. Затащу в гараж, надену мешок на голову, опущу руки в кипяток и заставлю жрать собственные варёные руки!

Что касается вашего вопроса, то this может играть четыре роли: созданный объект (если перед вызовом функции используется new), объект, содержащий функцию (например, в вызове Foo.bar() this будет указывать на foo). Также он может быть подменён при помощи методов .call() и .apply() или указывать на window при простом вызове: Foo() (это частный случай п. 2).

Golovastik
04.03.2011, 00:05
this указывает на объект класса или на свойство или метод класса?
1)А где хранится this само, в чём оно находится, в интерпретаторе или в ячейке Оп памяти?
2)
animal = new Animal("beastie");
После вызова конструктора, конструктор инициализировал объект и конструктор стал указывать на этот объект или this(встроенная конструкция языка джаваскрипт)?
3)Вот этот код:

function Animal(name) {
this.name = name
}

Это создание конструктора или класса Javascript?

Golovastik
04.03.2011, 01:22
То есть в зависимости от того в каком контексте зис находится он в зависимости от этого будет содержать ссылку на тот или иной именно объект, а не свойство или метод объекта?

Если я напишу так

pavel.dyrov.psix

На какой объект будет указывать ключевое слово зис.?

розовый слоник
05.03.2011, 16:46
я шоке:)ну и фантазия у человека:)
извините но вы не пробовали прочитать какие либо книги по js?

Golovastik
05.03.2011, 23:18
Так я читал книги, конкретного пояснения не нашёл на мои вопросы.